博客
关于我
stl序列式容器——vector
阅读量:552 次
发布时间:2019-03-09

本文共 1255 字,大约阅读时间需要 4 分钟。

STL序列式容器——Vector

简单介绍

vector是STL中最简单的序列式容器,定义在 <vector> 头文件中。它支持随机访问元素,类似于动态数组,同时拥有高效的迭代器支持,特别适用于频繁删除或随机访问元素的场景。此外,vector可以实现队列、数组和堆栈等数据结构的功能。

向量的定义

定义一个向量的方式如下:

#include 
using namespace std;vector
myvt;

向量的初始化

向量通过 push_back() 方法添加元素。例如:

myvt.push_back("something");

变量的容量管理

  • size() 返回当前元素数量。
  • capacity() 返回向量能容纳的最大元素数量。
  • max_size() 返回沿用最优率分配所能拥有的最大容量。
  • reserve() 预留给容器的空间。
  • resize()动态调整向量的大小。

向量的成员函数

向量包含丰富的成员函数,支持高效操作:

判断向量是否为空

使用 empty() 方法检查向量是否为空:

while (!myvt.empty()) {    // 内容}

遍历向量

支持两种遍历方式:

  • 迭代器方法:
  • vector
    vt;for (auto iter = vt.begin(); iter != vt.end(); ++iter) { // 类型处理}
    1. 使用常用函数 at(), front()back() 来访问元素。
    2. 高级编程功能

      向量支持多种高级操作:

      元素的访问

      • 使用 at() 定位元素,如 myvt.at(0)
      • 使用 [] 操作符直接访问。
      • 通过 front() 获取第一个元素,back() 获取最后一个元素。

      迭代器操作

      • 使用 begin()end() 获取起始和末尾迭代器。
      • 使用 rbegin()rend() 获取逆向迭代器。

      元素查找

      • 使用 find() 方法查找元素位置。
      • 使用自定义谓词与 find_if() 组合进行复杂查找。

      元素操作

      • 增添元素:push_back()insert()(支持任意位置插入)。
      • 删除元素:pop_back()erase()(支持任意位置删除)。-션操作:clear()清空,同时还可以使用swap()交换向量内容。

      关于 vector<bool> 的特殊处理

      vector<bool> 提供了优化的内存布局,以更高效地存储布尔值。

      总体操作流程

      从上述介绍可以看出,向量的使用步骤如下:

    3. 定义并声明向量。
    4. 使用 push_back() 向量中添加元素。
    5. 调用相关的成员方法(如 reserve(), size(), clear() 等)管理容量和数据。
    6. 通过迭代器或直接访问方法遍历向量元素。
    7. 使用高级算法处理向量数据,如排序、查找、插入和删除操作。
    8. 通过合理使用 vector,开发者可以充分发挥其高效的容器特性和灵活的操作能力。

    转载地址:http://ttzsz.baihongyu.com/

    你可能感兴趣的文章
    OWL本体语言
    查看>>
    P with Spacy:自定义文本分类管道
    查看>>
    P-DQN:离散-连续混合动作空间的独特算法
    查看>>
    P1035 I need help
    查看>>
    P1073 最优贸易
    查看>>
    P1364 医院设置
    查看>>
    P2260 [清华集训2012]模积和
    查看>>
    P3203 [HNOI2010]弹飞绵羊 —— 懒标记?分块?
    查看>>
    P4313 文理分科
    查看>>
    SpringBoot中集成LiteFlow(轻量、快速、稳定可编排的组件式规则引擎)实现复杂业务解耦、动态编排、高可扩展
    查看>>
    SpringBoot中集成influxdb-java实现连接并操作Windows上安装配置的influxDB(时序数据库)
    查看>>
    P8738 [蓝桥杯 2020 国 C] 天干地支
    查看>>
    package,source folder,folder相互转换
    查看>>
    SpringBoot中集成Flyway实现数据库sql版本管理入门以及遇到的那些坑
    查看>>
    package.json文件常用指令说明
    查看>>
    SpringBoot中集成eclipse.paho.client.mqttv3实现mqtt客户端并支持断线重连、线程池高并发改造、存储入库mqsql和redis示例业务流程,附资源下载
    查看>>
    Padding
    查看>>
    paddlehub安装及对口罩检测
    查看>>
    SpringBoot中集成Actuator实现监控系统运行状态
    查看>>
    paddle的两阶段基础算法基础
    查看>>